﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using PGI.EN.Anulacion;

namespace PGI.AD.Anulacion
{
    public class AnulacionAd
    {
        public static List<AnulacionEn> Movimientos_Anulaciones(int _tipoMovimiento, string _fechaInicio, string _fechaFin)
        {
            SqlCommand command = null;
            SqlConnection connection = null;
            SqlDataReader reader = null;

            string sql = "TrnMovInventarioSListarMovimientos";

            try
            {
                connection = DataBaseFactory.SqlOpenDatabase("PGI");

                command = new SqlCommand(sql, connection);
                command.CommandType = CommandType.StoredProcedure;

                command.Parameters.AddWithValue("@TipoMovimiento", _tipoMovimiento);
                command.Parameters.AddWithValue("@FechaInicio", _fechaInicio);
                command.Parameters.AddWithValue("@FechaFin", _fechaFin);

                reader = command.ExecuteReader();

                List<AnulacionEn> lstAnulacionEn = new List<AnulacionEn>();

                AnulacionEn AnulacionEn = null;

                while (reader.Read())
                {
                    AnulacionEn = new AnulacionEn();
                    AnulacionEn.MovimientoID = reader.IsDBNull(0) ? 0 : Convert.ToInt32(reader.GetValue(0));
                    AnulacionEn.Fecha_Movimiento = reader.IsDBNull(1) ? string.Empty : reader.GetValue(1).ToString();
                    AnulacionEn.CodigoProd = reader.IsDBNull(2) ? string.Empty : reader.GetValue(2).ToString();
                    AnulacionEn.CategoriaDes = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
                    AnulacionEn.MarcaDes = reader.IsDBNull(4) ? string.Empty : reader.GetValue(4).ToString();
                    AnulacionEn.ProductoDes = reader.IsDBNull(5) ? string.Empty : reader.GetString(5);
                    AnulacionEn.TallaDes = reader.IsDBNull(6) ? string.Empty : reader.GetValue(6).ToString();
                    AnulacionEn.ColorDes = reader.IsDBNull(7) ? string.Empty : reader.GetString(7);
                    AnulacionEn.MaterialDes = reader.IsDBNull(8) ? string.Empty : reader.GetValue(8).ToString();
                    AnulacionEn.TemporadaDes = reader.IsDBNull(9) ? string.Empty : reader.GetString(9);
                    AnulacionEn.Cantidad = reader.IsDBNull(10) ? 0 : Convert.ToInt32(reader.GetValue(10));
                    AnulacionEn.Costo_Unitario = reader.IsDBNull(11) ? 0 : Convert.ToDouble(reader.GetValue(11));
                    AnulacionEn.Precio_Venta = reader.IsDBNull(12) ? 0 : Convert.ToDouble(reader.GetValue(12));


                    lstAnulacionEn.Add(AnulacionEn);
                }

                return lstAnulacionEn;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                if (reader != null)
                    reader.Close();
                DataBaseFactory.SqlCloseDatabase("PGI");
            }
        }
        public static int Anular(int _movimientoID)
        {
            SqlCommand command = null;
            SqlConnection connection = null;
            SqlDataReader reader = null;

            string sql = "TrnMovInventarioUAnularMovimiento";

            try
            {
                connection = DataBaseFactory.SqlOpenDatabase("PGI");

                command = new SqlCommand(sql, connection);
                command.CommandType = CommandType.StoredProcedure;

                command.Parameters.AddWithValue("@MovimientoID", _movimientoID);
                command.Parameters.Add("@Resultado", SqlDbType.Int).Direction = ParameterDirection.Output;

                command.ExecuteNonQuery();

                int MovimientoID = Convert.ToInt32(command.Parameters["@Resultado"].Value);

                return MovimientoID;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                if (reader != null)
                    reader.Close();
                DataBaseFactory.SqlCloseDatabase("PGI");
            }
        }
    }
}
